package domain.entities;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

import javax.persistence.*;
import java.util.Collection;
import java.util.Date;

/**
 * MiembroBmsProtocolo entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "miembro_bms_protocolo", catalog = "bms")
public class MiembroBmsProtocolo implements java.io.Serializable {

	// Fields

	private MiembroBmsProtocoloId id;
	private MiembroBms miembroBms;
	private ProtocoloCompromisopais protocoloCompromisopais;
    private Date since;
    private Date until;
    private boolean activo;

    // Constructors

	/** default constructor */
	public MiembroBmsProtocolo() {
	}

	/** full constructor */
	public MiembroBmsProtocolo(MiembroBmsProtocoloId id, MiembroBms miembroBms,
			ProtocoloCompromisopais protocoloCompromisopais) {
		this.id = id;
		this.miembroBms = miembroBms;
		this.protocoloCompromisopais = protocoloCompromisopais;
	}

	// Property accessors
	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "miembroBmsid", column = @Column(name = "MIEMBRO_BMSid", nullable = false)),
			@AttributeOverride(name = "protocoloCompromisopaisprotocoloid", column = @Column(name = "protocolo_compromisopaisprotocoloid", nullable = false)),
			@AttributeOverride(name = "protocoloCompromisopaiscompromisopaisid", column = @Column(name = "protocolo_compromisopaiscompromisopaisid", nullable = false)) })
	public MiembroBmsProtocoloId getId() {
		return this.id;
	}

	public void setId(MiembroBmsProtocoloId id) {
		this.id = id;
	}

	@ManyToOne()
    @LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn(name = "MIEMBRO_BMSid", nullable = false, insertable = false, updatable = false)
	public MiembroBms getMiembroBms() {
		return this.miembroBms;
	}

	public void setMiembroBms(MiembroBms miembroBms) {
		this.miembroBms = miembroBms;
	}



	@ManyToOne()
    @LazyCollection(LazyCollectionOption.FALSE)
    @JoinColumns( {
			@JoinColumn(name = "protocolo_compromisopaisprotocoloid", referencedColumnName = "protocoloid", nullable = false, insertable = false, updatable = false),
			@JoinColumn(name = "protocolo_compromisopaiscompromisopaisid", referencedColumnName = "compromisopaisid", nullable = false, insertable = false, updatable = false) })
	public ProtocoloCompromisopais getProtocoloCompromisopais() {
		return this.protocoloCompromisopais;
	}

	public void setProtocoloCompromisopais(
			ProtocoloCompromisopais protocoloCompromisopais) {
		this.protocoloCompromisopais = protocoloCompromisopais;
	}


    private Collection<Centro> sites;

    @ManyToMany()
    @LazyCollection(LazyCollectionOption.FALSE)
    public Collection<Centro> getSites() {
        return sites;
    }

    public void setSites(Collection<Centro> sites) {
        this.sites = sites;
    }


    @Temporal(TemporalType.DATE)
    @Column(name = "since", length = 10)
    public Date getSince() {
        return since;
    }

    public void setSince(Date since) {
        this.since = since;
    }

    @Temporal(TemporalType.DATE)
    @Column(name = "until", length = 10)
    public Date getUntil() {
        return until;
    }

    public void setUntil(Date until) {
        this.until = until;
    }

    @Column(name = "activo")
    public boolean getActivo() {
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }
}